<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>送花</title>
</head>
<body>
    <script>
        // chrome 最快的浏览器
        // 浏览器 上网代理，运行页面时，js的宿主环境 
        // 作用域 
        function func(){
            let c=3;  //局部变量
        }
        // 全局变量
        // 变量名 地址的映射 属于运行环境的作用域
        let d;  //undefined 没有值，类型未定义， 空间起始地址
        //  空间大小未定义
        var a=1; //var es5 及之前js变量常量声明关键字
        let b=2; //es6 2015 之后提供的let const
        // const name="rose";
        // let age=20;
        // const hometown = "南昌";
        // const sex = '女';
        // 除了简单数据类型之外的 一切都是对象
        // 对象 字面量
        /*
        *  函数名大写， 类的构造函数
        */
    //    class Flower {
    //        constructor(){

    //        }
    //    }

        function Flower(type,num){
            // // this 指针
            // this  指向构造函数运行时的对象
            console.log(this);
            this.type = type;
            this.num = num;
        }
        // 构造对象时就指向哪个
        const ych = new Flower('油菜花',1);
        console.log(ych.type);
        const rose = new Flower('玫瑰',1);
        console.log(rose.type);

        const obj = {
            name: "rose",
            age: 20,
            homedown: "南昌",
            sex: '女' 
        };
        // 对象字面量  talk in js
        const wsq={
            name: "王思琦",
            age: 20,
            homedown: '赣州',
            sex: '女',
            yz: 88,
            isSingle: true,
            bf: null,
            work_status: undefined,
            sendFlower(target) {
                // this 指向对象
                const flower = new Flower('红玫瑰',99);
               console.log(this);
                // xiaomei
               // 虽然xiaomei是全局变量
               // 传参可以传入不同值
               // console.log(target);
               // target 类型是对象， 对象上有sendFlower方法
               target.receiverFlower(this,flower);
            }
        }
        // 对象由哪两部分组成？ 属性，方法
        // [] 数组  {} 对象
        const xiaomei={
            name: "xiaomei",
            age: 20,
            receiverFlower(sender,flower){
                // 代码可读性 ，如果很长，换行
                console.log("收到了"+sender.name+'送的'
                +flower.num+'朵'+flower.type+'花');
            }
        }
        // 老乡和小美是室友
        // 接口 代理人
        const xiaohong={
            name: "小红",
            homedown: "九江",
            // 接口
            receiverFlower(sender,flower){
                // console.log('让我们在一起吧~');
                // xiaohong.sendFlower(sender,target);
                // if(sender.name=='王思琦') {
                //     console.log('让我们在一起吧~');
                // } 
                //小红拥有和小美一样的接口方法
                // 代替小美收花
                if(sender.yz < 90){
                    console.log('不收....')
                }else {
                    console.log('万达走一波');
                xiaomei.receiverFlower(sender,flower);
            }
            }
            // sendFlower(sender,target){
            //     target.receiverFlower(sender)
            // }
        }
       // wsq.sendFlower(xiaomei);
       wsq.sendFlower(xiaohong);
       

    </script>
</body>
</html>